package com.vueperson.vueperson.t1.test03;


import java.util.ArrayDeque;
import java.util.Deque;

/**
 * 模拟堆栈
 */

/**
 *
 * @param <E>
 *      操作          第一个元素                            最后一个元素
 *                    抛出异常         特殊值
 *      插入          addFirst(e)     offerFirst(e)
 *                    push(e)
 *      移除          removeFirst()   pollFirst()
 *                    remove()/pop()  poll()
 *      获取          getFirst()      peekFirst()
 *                    element()       peek()
 */
public class MyStack<E> {
    //容器
    private Deque<E> container=new ArrayDeque<E>();
    //容量
    private int cap;

    public MyStack(int cap) {
        this.cap = cap;
    }




    //压栈
    public boolean push(E e){
        if (container.size()+1 >cap) {
            return false;
        }
        return container.offerLast(e);
    }

    //弹栈
    public E pop(){
        return container.pollLast();

    }
    //获取
    public E peek(){
        return container.peekLast();
    }

    public int size(){
        return this.container.size();
    }


    public static void main(String[] args) {
        MyStack<String> backHistory=new MyStack<String>(3);
        backHistory.push("baidu.com");
        backHistory.push("google.com");
        backHistory.push("aliyun.com");
        backHistory.push("snake19840.net");

        System.out.println("大小:"+ backHistory.size());
        //遍历
        String item=null;
        while (null!=(item=backHistory.pop())){
            System.out.println(item);
        }

    }
}
